/**
 * 表单校验函数
 */

import * as validate from './validate'

/**
 * 校验逻辑简单封装
 * @param fun 校验函数
 * @param errMsg 异常消息
 * @returns
 */
function validateFun(fun: (val: any) => boolean, errMsg: string): (rule: any, value: any, callback: any) => any {
	return (rule: any, value: any, callback: any) => {
		// 验证邮箱正则表达式
		if (fun(value)) {
			return callback()
		} else {
			return callback(new Error(errMsg))
		}
	}
}

/**
 *  @rule 用户名
 */
export const validateUsername = validateFun(validate.isUsername, '请输入4到16位由字母、数字、下划线、减号组成的字符')
/**
 *  @rule 密码
 */
export const validatePassword = validateFun(
	validate.isPassword,
	'请输入最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符组成的字符'
)
/**
 *  @rule 邮箱
 */
export const validateEmail = validateFun(validate.isEmail, '请输入4-8位由字母、数字、特殊符号组成的字符')
/**
 *  @rule 手机号
 */
export const validateMobile = validateFun(validate.isMobile, '请输入正确的手机号')
/**
 *  @rule 固话验证
 */
export const validateTel = validateFun(validate.isTel, '请输入正确的电话号码')
/**
 *  @rule 身份证验证
 */
export const validateIdCard = validateFun(validate.isIdCard, '请输入正确的身份证号码')
